package py.una.pol.ii.is2.dao.flota;

import java.util.List;
import javax.ejb.Local;
import py.una.pol.ii.is2.domain.flota.Caracteristica;
import py.una.pol.ii.is2.domain.flota.Vehiculo;
import py.una.pol.ii.is2.domain.flota.VehiculoCaracteristica;
import py.una.pol.ii.is2.domain.flota.VehiculoCaracteristicaPK;

/**
 *  Define la interfaz VehiculoCaracteristicaDAO.
 *  Las operaciones que soporta la interfaz son:
 *      a) insert --> inserción de un objeto de tipo VehiculoCaracteristica
 *      b) update --> actualización de un objeto de tipo VehiculoCaracteristica
 *      c) delete --> eliminación de un objeto de tipo VehiculoCaracteristica
 *      d) find --> búsqueda de un objeto de tipo VehiculoCaracteristica
 *      e) getListaVehiculoCaracteristicas --> listado de entidades de tipo VehiculoCaracterística
 *      f) getListaVehiculoCaracteristicasByCodVehiculo -->
 *      g) getListaVehiculoCaracteristicasByCodCaracteristica -->
 *  @author mbenitez
 *  @date 30/04/2009
 */

public interface VehiculoCaracteristicaDAO {
    /**
     * Permite la inserción de un objeto de tipo VehiculoCaracteristica
     * @param objeto Elemento a insertar
     * @return true si la operación tuvo éxito, en otro caso false
     * @throws java.lang.Exception
     */
    public boolean insert(VehiculoCaracteristica objeto) throws Exception;
    /**
     * Permite la actualización de un objeto de tipo VehiculoCaracterística
     * @param objeto Elemento a editar
     * @return true si la operación tuvo éxito, en otro caso false
     * @throws java.lang.Exception
     */
    public boolean update(VehiculoCaracteristica objeto) throws Exception;
    /**
     * Permite la eliminación de un objeto de tipo VehiculoCaracterística
     * @param objeto Elemento a eliminar
     * @return true si la operación tuvo éxito, en otro caso false
     * @throws java.lang.Exception
     */
    public boolean delete(VehiculoCaracteristica objeto) throws Exception;
    /**
     * Busca un registro de la tabla VehiculoCaracteristica por el código de la misma
     * @param codObjeto Código del VehiculoCaracteristica a buscar
     * @return VehiculoCaracteristica encontrado, en otro caso null
     * @throws java.lang.Exception
     */
    public VehiculoCaracteristica find(VehiculoCaracteristicaPK codObjeto) throws Exception;
     /**
     * Permite recuperar una lista de entidades ordenadas por la clave primaria.
     * La lista obedece a una restricción que recibe como parámetro pudiendo éste ser null.
     *
     * @param condicion Restricción de búsqueda
     * @return Lista de entidades, en otro caso null.
     * @throws java.lang.Exception
     */
    public List<VehiculoCaracteristica> getListaVehiculoCaracteristicas(String condicion) throws Exception;
    /**
     * Permite recuperar una lista de entidades ordenadas por vehículo.
     * @param codVehiculo Código de vehículo
     * @return Lista de entidades, en otro caso null.
     * @throws java.lang.Exception
     */
    public List<VehiculoCaracteristica> getListaVehiculoCaracteristicasByCodVehiculo(Vehiculo codVehiculo) throws Exception;
    /**
     * Permite recuperar una lista de entidades ordenadas por caracteristica.
     * @param codCaracteristica Código de caracteristica
     * @return Lista de entidades, en otro caso null.
     * @throws java.lang.Exception
     */
    public List<VehiculoCaracteristica> getListaVehiculoCaracteristicasByCodCaracteristica(Caracteristica codCaracteristica) throws Exception;
}
